<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>Nginx 中文文档 - Beginner&#39;s Guide | Docs4dev</title>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="true">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta property="og:type" content="website">
<meta property="og:title" content="Nginx 中文文档 - Beginner&#39;s Guide">
<meta property="og:url" content="https://www.docs4dev.com/docs/zh/nginx/current/reference/beginners_guide.html">
<meta property="og:site_name" content="Docs4dev">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。">
<meta name="generator" content="Docs4dev template engine">
<link rel="stylesheet" href="static/css/app.min.css">
<link rel="shortcut icon" href="https://www.docs4dev.com/static/images/favicon.ico" type="image/x-icon">
<script async="" src="static/js/js.js"></script>
<script async="" src="static/js/adsbygoogle.js" crossorigin="anonymous"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
      dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', 'UA-129571937-1');
  </script>
<link rel="amphtml" href="https://www.docs4dev.com/amp/docs/zh/nginx/current/reference/beginners_guide.html">
<script type="application/ld+json">{"name":null,"headline":"Nginx 中文文档-Beginner's Guide","inLanguage":"zh-CN","version":"current","image":"/static/icon/icon-nginx.svg","datePublished":"2021-05-20T12:51:01Z","dateCreated":"2021-05-20T12:51:01Z","dateModified":"2021-07-07T12:48:29Z","@context":"https://schema.org/","@type":"APIReference","abstract":"Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。"}</script>
</head>
<body>
<div class="book with-summary">
<div class="book-summary">
<div class="logo">
<a href="index.html" style="color: inherit;">
<img src="static/picture/icon-nginx.svg" style="width: 48px; height: 48px;" alt="Logo">
</a>
<b style="color: inherit; margin-left: 8px;">Nginx 中文文档</b>
</div>
<div class="item">
<div>
<label for="version">版本</label>
<select id="version" onchange="onVersionChange(this)">
<option value="current" selected="selected">current</option>
</select>
</div>
<div style="margin-top: 8px;">
<label for="language">语言</label>
<select id="language" onchange="onLangChange(this)" value="zh">
<option value="en">English</option>
<option value="zh" selected="selected">中文</option>
</select>
</div>

</div>
<div class="item menus">
<a title="Table of Contents" style="margin-right: 8px;" href="index.html">
 <i class="fa fa-chevron-left"></i>
<span style="margin-left: 2px;">返回目录</span>
</a>
</div>
<nav role="navigation" id="navigation">
<ul class="summary">
<li class="chapter"> <a href="install.html" title="Introduction"> Introduction </a>
<ul class="articles">
<li class="chapter"> <a href="install.html" title="Installing nginx"> Installing nginx </a> </li>
<li class="chapter"> <a href="configure.html" title="从源代码构建  Nginx"> 从源代码构建 Nginx </a> </li>
<li class="chapter"> <a href="" title="Beginner's Guide"> Beginner's Guide </a> </li>
<li class="chapter"> <a href="control.html" title="Controlling nginx"> Controlling nginx </a> </li>
<li class="chapter"> <a href="events.html" title="连接处理方法"> 连接处理方法 </a> </li>
<li class="chapter"> <a href="hash.html" title="设置哈希"> 设置哈希 </a> </li>
<li class="chapter"> <a href="debugging_log.html" title="调试日志"> 调试日志 </a> </li>
<li class="chapter"> <a href="syslog.html" title="记录到系统日志"> 记录到系统日志 </a> </li>
<li class="chapter"> <a href="syntax.html" title="配置文件测量单位"> 配置文件测量单位 </a> </li>
<li class="chapter"> <a href="switches.html" title="Command-line parameters"> Command-line parameters </a> </li>
<li class="chapter"> <a href="windows.html" title="Windows 版  Nginx"> Windows 版 Nginx </a> </li>
<li class="chapter"> <a href="http-request_processing.html" title="Nginx 如何处理请求"> Nginx 如何处理请求 </a> </li>
<li class="chapter"> <a href="http-server_names.html" title="Server names"> Server names </a> </li>
<li class="chapter"> <a href="http-load_balancing.html" title="使用  Nginx 作为  HTTP 负载均衡器"> 使用 Nginx 作为 HTTP 负载均衡器 </a> </li>
<li class="chapter"> <a href="http-configuring_https_servers.html" title="配置  HTTPS 服务器"> 配置 HTTPS 服务器 </a> </li>
<li class="chapter"> <a href="stream-stream_processing.html" title="Nginx 如何处理  TCP/UDP 会话"> Nginx 如何处理 TCP/UDP 会话 </a> </li>
<li class="chapter"> <a href="njs-index.html" title="用  njs 编写脚本"> 用 njs 编写脚本 </a> </li>
</ul> </li>
<li class="chapter"> <a href="howto_build_on_win32.html" title="How-To"> How-To </a>
<ul class="articles">
<li class="chapter"> <a href="howto_build_on_win32.html" title="使用  Visual C 在  Win32 平台上构建  Nginx"> 使用 Visual C 在 Win32 平台上构建 Nginx </a> </li>
<li class="chapter"> <a href="nginx_dtrace_pid_provider.html" title="使用  DTrace pid 提供程序调试  nginx"> 使用 DTrace pid 提供程序调试 nginx </a> </li>
<li class="chapter"> <a href="http-converting_rewrite_rules.html" title="转换重写规则"> 转换重写规则 </a> </li>
<li class="chapter"> <a href="http-websocket.html" title="WebSocket proxying"> WebSocket proxying </a> </li>
</ul> </li>
<li class="chapter"> <a href="contributing_changes.html" title="Development"> Development </a>
<ul class="articles">
<li class="chapter"> <a href="contributing_changes.html" title="Contributing Changes"> Contributing Changes </a> </li>
<li class="chapter"> <a href="dev-development_guide.html" title="Development guide"> Development guide </a> </li>
</ul> </li>
<li class="chapter"> <a href="dirindex.html" title="Modules reference"> Modules reference </a>
<ul class="articles">
<li class="chapter"> <a href="dirindex.html" title="指令的字母索引"> 指令的字母索引 </a> </li>
<li class="chapter"> <a href="varindex.html" title="变量按字母顺序索引"> 变量按字母顺序索引 </a> </li>
<li class="chapter"> <a href="ngx_core_module.html" title="Core functionality"> Core functionality </a> </li>
<li class="chapter"> <a href="http-ngx_http_core_module.html" title="ngx_http_core_module"> ngx_http_core_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_access_module.html" title="ngx_http_access_module"> ngx_http_access_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_addition_module.html" title="ngx_http_addition_module"> ngx_http_addition_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_api_module.html" title="ngx_http_api_module"> ngx_http_api_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_basic_module.html" title="ngx_http_auth_basic_module"> ngx_http_auth_basic_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_jwt_module.html" title="ngx_http_auth_jwt_module"> ngx_http_auth_jwt_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_request_module.html" title="ngx_http_auth_request_module"> ngx_http_auth_request_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_autoindex_module.html" title="ngx_http_autoindex_module"> ngx_http_autoindex_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_browser_module.html" title="ngx_http_browser_module"> ngx_http_browser_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_charset_module.html" title="ngx_http_charset_module"> ngx_http_charset_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_dav_module.html" title="ngx_http_dav_module"> ngx_http_dav_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_empty_gif_module.html" title="ngx_http_empty_gif_module"> ngx_http_empty_gif_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_f4f_module.html" title="ngx_http_f4f_module"> ngx_http_f4f_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_fastcgi_module.html" title="ngx_http_fastcgi_module"> ngx_http_fastcgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_flv_module.html" title="ngx_http_flv_module"> ngx_http_flv_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_geo_module.html" title="ngx_http_geo_module"> ngx_http_geo_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_geoip_module.html" title="ngx_http_geoip_module"> ngx_http_geoip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_grpc_module.html" title="ngx_http_grpc_module"> ngx_http_grpc_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gunzip_module.html" title="ngx_http_gunzip_module"> ngx_http_gunzip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gzip_module.html" title="ngx_http_gzip_module"> ngx_http_gzip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gzip_static_module.html" title="ngx_http_gzip_static_module"> ngx_http_gzip_static_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_headers_module.html" title="ngx_http_headers_module"> ngx_http_headers_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_hls_module.html" title="ngx_http_hls_module"> ngx_http_hls_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_image_filter_module.html" title="ngx_http_image_filter_module"> ngx_http_image_filter_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_index_module.html" title="ngx_http_index_module"> ngx_http_index_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_js_module.html" title="ngx_http_js_module"> ngx_http_js_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_keyval_module.html" title="ngx_http_keyval_module"> ngx_http_keyval_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_limit_conn_module.html" title="ngx_http_limit_conn_module"> ngx_http_limit_conn_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_limit_req_module.html" title="ngx_http_limit_req_module"> ngx_http_limit_req_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_log_module.html" title="ngx_http_log_module"> ngx_http_log_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_map_module.html" title="ngx_http_map_module"> ngx_http_map_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_memcached_module.html" title="ngx_http_memcached_module"> ngx_http_memcached_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_mirror_module.html" title="ngx_http_mirror_module"> ngx_http_mirror_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_mp4_module.html" title="ngx_http_mp4_module"> ngx_http_mp4_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_perl_module.html" title="ngx_http_perl_module"> ngx_http_perl_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_proxy_module.html" title="ngx_http_proxy_module"> ngx_http_proxy_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_random_index_module.html" title="ngx_http_random_index_module"> ngx_http_random_index_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_realip_module.html" title="ngx_http_realip_module"> ngx_http_realip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_referer_module.html" title="ngx_http_referer_module"> ngx_http_referer_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_rewrite_module.html" title="ngx_http_rewrite_module"> ngx_http_rewrite_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_scgi_module.html" title="ngx_http_scgi_module"> ngx_http_scgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_secure_link_module.html" title="ngx_http_secure_link_module"> ngx_http_secure_link_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_session_log_module.html" title="ngx_http_session_log_module"> ngx_http_session_log_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_slice_module.html" title="ngx_http_slice_module"> ngx_http_slice_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_spdy_module.html" title="ngx_http_spdy_module"> ngx_http_spdy_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_split_clients_module.html" title="ngx_http_split_clients_module"> ngx_http_split_clients_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_ssi_module.html" title="ngx_http_ssi_module"> ngx_http_ssi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_ssl_module.html" title="ngx_http_ssl_module"> ngx_http_ssl_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_status_module.html" title="ngx_http_status_module"> ngx_http_status_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_stub_status_module.html" title="ngx_http_stub_status_module"> ngx_http_stub_status_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_sub_module.html" title="ngx_http_sub_module"> ngx_http_sub_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_module.html" title="ngx_http_upstream_module"> ngx_http_upstream_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_conf_module.html" title="ngx_http_upstream_conf_module"> ngx_http_upstream_conf_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_hc_module.html" title="ngx_http_upstream_hc_module"> ngx_http_upstream_hc_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_userid_module.html" title="ngx_http_userid_module"> ngx_http_userid_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_uwsgi_module.html" title="ngx_http_uwsgi_module"> ngx_http_uwsgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_v2_module.html" title="ngx_http_v2_module"> ngx_http_v2_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_xslt_module.html" title="ngx_http_xslt_module"> ngx_http_xslt_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_core_module.html" title="ngx_mail_core_module"> ngx_mail_core_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_auth_http_module.html" title="ngx_mail_auth_http_module"> ngx_mail_auth_http_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_proxy_module.html" title="ngx_mail_proxy_module"> ngx_mail_proxy_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_ssl_module.html" title="ngx_mail_ssl_module"> ngx_mail_ssl_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_imap_module.html" title="ngx_mail_imap_module"> ngx_mail_imap_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_pop3_module.html" title="ngx_mail_pop3_module"> ngx_mail_pop3_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_smtp_module.html" title="ngx_mail_smtp_module"> ngx_mail_smtp_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_core_module.html" title="ngx_stream_core_module"> ngx_stream_core_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_access_module.html" title="ngx_stream_access_module"> ngx_stream_access_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_geo_module.html" title="ngx_stream_geo_module"> ngx_stream_geo_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_geoip_module.html" title="ngx_stream_geoip_module"> ngx_stream_geoip_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_js_module.html" title="ngx_stream_js_module"> ngx_stream_js_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_keyval_module.html" title="ngx_stream_keyval_module"> ngx_stream_keyval_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_limit_conn_module.html" title="ngx_stream_limit_conn_module"> ngx_stream_limit_conn_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_log_module.html" title="ngx_stream_log_module"> ngx_stream_log_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_map_module.html" title="ngx_stream_map_module"> ngx_stream_map_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_proxy_module.html" title="ngx_stream_proxy_module"> ngx_stream_proxy_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_realip_module.html" title="ngx_stream_realip_module"> ngx_stream_realip_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_return_module.html" title="ngx_stream_return_module"> ngx_stream_return_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_split_clients_module.html" title="ngx_stream_split_clients_module"> ngx_stream_split_clients_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_ssl_module.html" title="ngx_stream_ssl_module"> ngx_stream_ssl_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_ssl_preread_module.html" title="ngx_stream_ssl_preread_module"> ngx_stream_ssl_preread_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_upstream_module.html" title="ngx_stream_upstream_module"> ngx_stream_upstream_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_upstream_hc_module.html" title="ngx_stream_upstream_hc_module"> ngx_stream_upstream_hc_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_zone_sync_module.html" title="ngx_stream_zone_sync_module"> ngx_stream_zone_sync_module </a> </li>
<li class="chapter"> <a href="ngx_google_perftools_module.html" title="ngx_google_perftools_module"> ngx_google_perftools_module </a> </li>
</ul> </li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<header class="book-header">
<div class="dropdown pull-right js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-globe"></i>
</a>
<div class="dropdown-menu dropdown-left">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('zh_CN')">中文</button>
</div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('en_US')">English</button>
</div>
</div>
</div>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign up" href="register.html">
<i class="fa fa-sign-in"></i> <span>注册</span>
</a>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign in" href="register.html">
<i class="fa fa-sign-in"></i>
<span>登录</span>
</a>
<a class="btn pull-left js-toolbar-action btn-summary" href="#"><i class="fa fa-align-justify"></i></a>
<div class="dropdown pull-left font-settings js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Font Settings" href="#">
<i class="fa fa-font"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-2 font-reduce">A</button>
<button class="button size-2 font-enlarge">A</button>
</div>
<div class="buttons">
<button class="button size-2 family-serif">Serif</button>
<button class="button size-2 family-sans">Sans</button>
</div>
<div class="buttons">
<button class="button size-3 theme-white">White</button>
<button class="button size-3 theme-sepia">Sepia</button>
<button class="button size-3 theme-night">Night</button>
</div>
</div>
</div>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Home" href="zh.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Tools" href="index1.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
<div class="dropdown pull-left js-toolbar-action mobile">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-chevron-down"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<a class="button size-1" aria-label="Home" href="zh.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
</div>
<div class="buttons">
<a class="button size-1" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
</div>
<div class="buttons">
<a class="button size-1" aria-label="Tools" href="index1.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
</div>
</div>
</div>
<div id="autocomplete" class="pull-right"></div>
<span id="toolbar-title"></span>
</header>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal markdown-section">
<div id="content">
<h1>Beginner&#39;s Guide</h1>
<div><ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6108808167664152" data-ad-slot="6964403648"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div><ul>
<li><a href="#control">启动，停止和重新加载配置</a></li>
<li><a href="#conf_structure">配置文件的结构</a></li>
<li><a href="#static">提供静态内容</a></li>
<li><a href="#proxy">设置简单的代理服务器</a></li>
<li><a href="#fastcgi">设置 FastCGI 代理</a></li>
</ul>
<p>本指南对 nginx 进行了基本介绍，并描述了一些可以使用它完成的简单任务。假定已经在阅读器的计算机上安装了 nginx。如果不是，请参见<a href="install.html">Installing nginx</a>页。本指南描述了如何启动和停止 nginx 以及重新加载其配置，解释了配置文件的结构，并描述了如何设置 nginx 以提供静态内容，如何将 nginx 配置为代理服务器以及如何将其与 FastCGI 应用程序。</p>
<p>nginx 有一个主进程和几个工作进程。主流程的主要目的是读取和评估配置，以及维护工作流程。工作进程对请求进行实际处理。 nginx 使用基于事件的模型和依赖于 os 的机制来有效地在工作进程之间分配请求。工作进程的数量在配置文件中定义，可以针对给定的配置固定，也可以自动调整为可用 CPU 内核的数量(请参见<a href="ngx_core_module.html#worker_processes">worker_processes</a>)。</p>
<p>nginx 及其模块的工作方式在配置文件中确定。默认情况下，配置文件名为<code>nginx.conf</code>，并放置在目录<code>/usr/local/nginx/conf</code>，<code>/etc/nginx</code>或<code>/usr/local/etc/nginx</code>中。</p>
<p><a href="" id="control"></a></p>
<h4 id="启动停止和重新加载配置"><a href="#启动停止和重新加载配置" id="启动停止和重新加载配置"></a>启动，停止和重新加载配置</h4>
<p>要启动 nginx，请运行可执行文件。一旦启动 nginx，就可以通过使用<code>-s</code>参数调用可执行文件来对其进行控制。使用以下语法：</p>
<pre><code class="hljs language-shell">nginx -s signal
</code></pre>
<p>其中 signal 可能是以下之一：</p>
<ul>
<li>
<p><code>stop</code> —快速关机</p>
</li>
<li>
<p><code>quit</code> —正常关机</p>
</li>
<li>
<p><code>reload</code> —重新加载配置文件</p>
</li>
<li>
<p><code>reopen</code> —重新打开日志文件</p>
</li>
</ul>
<p>例如，要在 await 工作进程完成对当前请求的服务的过程中停止 nginx 进程，可以执行以下命令：</p>
<pre><code class="hljs language-shell">nginx -s quit
</code></pre>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>此命令应在启动 nginx 的同一用户下执行。</p>
</div></div>
<p>在重新加载配置的命令发送到 nginx 或重新启动它之前，不会应用对配置文件所做的更改。要重新加载配置，请执行：</p>
<pre><code class="hljs language-shell">nginx -s reload
</code></pre>
<p>一旦主进程接收到重新加载配置的 signal，它将检查新配置文件的语法有效性，并尝试应用其中提供的配置。如果成功，则主进程将启动新的工作进程，并将消息发送到旧的工作进程，要求它们关闭。否则，主进程将回滚更改并 continue 使用旧配置。旧的工作进程接收到关闭命令，停止接受新的连接并 continue 为当前请求提供服务，直到为所有此类请求提供服务。之后，旧的工作进程退出。</p>
<p>也可以借助 Unix 工具(例如<code>kill</code>Util)将 signal 发送到 nginx 进程。在这种情况下，将 signal 直接发送给具有给定进程 ID 的进程。默认情况下，nginx 主进程的进程 ID 被写入目录<code>/usr/local/nginx/logs</code>或<code>/var/run</code>中的<code>nginx.pid</code>。例如，如果主进程 ID 为 1628，要发送导致 NGINX 正常关闭的 QUITsignal，请执行：</p>
<pre><code class="hljs language-shell">kill -s QUIT 1628
</code></pre>
<p>为了获取所有正在运行的 nginx 进程的列表，可以按以下方式使用<code>ps</code>Util：</p>
<pre><code class="hljs language-shell">ps -ax | grep nginx
</code></pre>
<p>有关将 signal 发送到 nginx 的更多信息，请参见<a href="control.html">Controlling nginx</a>。</p>
<p><a href="" id="conf_structure"></a></p>
<h4 id="配置文件的结构"><a href="#配置文件的结构" id="配置文件的结构"></a>配置文件的结构</h4>
<p>nginx 由受配置文件中指定的指令控制的模块组成。伪指令分为简单伪指令和块伪指令。一个简单的指令由名称和参数组成，这些名称和参数之间用空格分隔，并以分号(<code>;</code>)结尾。块指令的结构与简单指令的结构相同，但它以分号结尾，而不是以分号结尾的一组附加指令(<code>{</code>和<code>}</code>)包围。如果块指令在括号内可以有其他指令，则称为上下文(示例：<a href="ngx_core_module.html#events">events</a>，<a href="http-ngx_http_core_module.html#http">http</a>，<a href="http-ngx_http_core_module.html#server">server</a>和<a href="http-ngx_http_core_module.html#location">location</a>)。</p>
<p>放置在任何上下文外部的配置文件中的指令都被视为在<a href="ngx_core_module.html">main</a>上下文中。 <code>events</code>和<code>http</code>指令位于<code>main</code>上下文中，<code>server</code>在<code>http</code>中，而<code>location</code>在<code>server</code>中。</p>
<p><code>#</code>符号后的其余行被视为注释。</p>
<p><a href="" id="static"></a></p>
<h4 id="提供静态内容"><a href="#提供静态内容" id="提供静态内容"></a>提供静态内容</h4>
<p>Web 服务器的一项重要任务是分发文件(例如图像或静态 HTML 页面)。您将实现一个示例，其中将根据请求从不同的本地目录提供文件：<code>/data/www</code>(可能包含 HTML 文件)和<code>/data/images</code>(包含图像)。这将需要编辑配置文件，并在带有两个<a href="http-ngx_http_core_module.html#server">location</a>块的<a href="http-ngx_http_core_module.html#http">http</a>块内设置一个<a href="http-ngx_http_core_module.html#location">server</a>块。</p>
<p>首先，创建<code>/data/www</code>目录，并将包含任何文本内容的<code>index.html</code>文件放入其中，并创建<code>/data/images</code>目录，并将一些图像放入其中。</p>
<p>接下来，打开配置文件。默认配置文件已经包含<code>server</code>块的几个示例，大部分已注释掉。现在，注释掉所有此类块并开始一个新的<code>server</code>块：</p>
<pre><code class="hljs language-shell">http {
    server {
    }
}
</code></pre>
<p>通常，配置文件可按其<a href="http-ngx_http_core_module.html#listen">listen</a>到<a href="http-server_names.html">server names</a>的端口包括几个<code>server</code>块<a href="http-request_processing.html">distinguished</a>。一旦 nginx 决定了哪个<code>server</code>处理请求，它就会针对<code>server</code>块中定义的<code>location</code>伪指令的参数测试在请求 Headers 中指定的 URI。</p>
<p>将以下<code>location</code>块添加到<code>server</code>块：</p>
<pre><code class="hljs language-shell">location / {
    root /data/www;
}
</code></pre>
<p>与来自请求的 URI 相比，此<code>location</code>块指定“ <code>/</code>”前缀。对于匹配的请求，会将 URI 添加到<a href="http-ngx_http_core_module.html#root">root</a>指令中指定的路径，即<code>/data/www</code>，以形成本地文件系统上所请求文件的路径。如果有多个匹配的<code>location</code>块，nginx 将选择前缀最长的那个。上面的<code>location</code>块提供了最短的前缀(长度为 1)，因此，仅当所有其他<code>location</code>块均未提供匹配项时，才会使用该块。</p>
<p>接下来，添加第二个<code>location</code>块：</p>
<pre><code class="hljs language-shell">location /images/ {
    root /data;
}
</code></pre>
<p>匹配以<code>/images/</code>开头的请求(<code>location /</code>也匹配此类请求，但前缀较短)。</p>
<p><code>server</code>块的最终配置应如下所示：</p>
<pre><code class="hljs language-shell">server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}
</code></pre>
<p>这已经是服务器的工作配置，可以在标准端口 80 上侦听，并且可以在本地计算机<code>http://localhost/</code>上访问。响应以<code>/images/</code>开头的 URI 请求，服务器将从<code>/data/images</code>目录发送文件。例如，响应<code>http://localhost/images/example.png</code>请求，nginx 将发送<code>/data/images/example.png</code>文件。如果该文件不存在，nginx 将发送一个指示 404 错误的响应。 URI 不以<code>/images/</code>开头的请求将被映射到<code>/data/www</code>目录。例如，响应<code>http://localhost/some/example.html</code>请求，nginx 将发送<code>/data/www/some/example.html</code>文件。</p>
<p>要应用新配置，请启动 nginx(如果尚未启动)，或者通过执行以下命令将<code>reload</code>signal 发送到 nginx 的主进程：</p>
<pre><code class="hljs language-shell">nginx -s reload
</code></pre>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>如果某些操作无法按预期工作，则可以尝试在目录<code>/usr/local/nginx/logs</code>或<code>/var/log/nginx</code>的<code>access.log</code>和<code>error.log</code>文件中查找原因。</p>
</div></div>
<p><a href="" id="proxy"></a></p>
<h4 id="设置简单的代理服务器"><a href="#设置简单的代理服务器" id="设置简单的代理服务器"></a>设置简单的代理服务器</h4>
<p>nginx 的一种常用用法是将其设置为代理服务器，这意味着服务器可以接收请求，将请求传递给代理服务器，从请求中获取响应并将其发送给客户端。</p>
<p>我们将配置一个基本的代理服务器，该服务器为图像请求和本地目录中的文件提供服务，并将所有其他请求发送到代理服务器。在此示例中，两个服务器都将在单个 nginx 实例上定义。</p>
<p>首先，通过向 nginx 的配置文件中添加一个<code>server</code>1 块来定义代理服务器，其内容如下：</p>
<pre><code class="hljs language-shell">server {
    listen 8080;
    root /data/up1;

    location / {
    }
}
</code></pre>
<p>这将是一个简单的服务器，它侦听端口 8080(以前，由于使用了标准端口 80，因此未指定<code>listen</code>指令)，并将所有请求映射到本地文件系统上的<code>/data/up1</code>目录。创建此目录并将<code>index.html</code>文件放入其中。请注意，<code>root</code>指令位于<code>server</code>上下文中。当选择用于服务请求的<code>location</code>块不包含自己的<code>root</code>指令时，将使用此类<code>root</code>指令。</p>
<p>接下来，使用上一部分中的服务器配置并对其进行修改以使其成为代理服务器配置。在第一个<code>location</code>块中，将<a href="http-ngx_http_proxy_module.html#proxy_pass">proxy_pass</a>指令与参数中指定的代理服务器的协议，名称和端口(在本例中为<code>http://localhost:8080</code>)放在一起：</p>
<pre><code class="hljs language-shell">server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}
</code></pre>
<p>我们将修改第二个<code>location</code>块，该块当前将带有<code>/images/</code>前缀的请求映射到<code>/data/images</code>目录下的文件，以使其与具有典型文件 extensions 的图像的请求匹配。修改后的<code>location</code>块如下所示：</p>
<pre><code class="hljs language-shell">location ~ \.(gif|jpg|png)$ {
    root /data/images;
}
</code></pre>
<p>该参数是一个正则表达式，匹配所有以<code>.gif</code>，<code>.jpg</code>或<code>.png</code>结尾的 URI。正则表达式应以<code>~</code>开头。相应的请求将被映射到<code>/data/images</code>目录。</p>
<p>当 nginx 选择一个<code>location</code>块来服务请求时，它首先检查指定前缀的<a href="http-ngx_http_core_module.html#location">location</a>指令，记住最长的<code>location</code>，然后检查正则表达式。如果与正则表达式匹配，则 nginx 会选择此<code>location</code>，否则，它将选择先前记住的那个。</p>
<p>代理服务器的最终配置如下所示：</p>
<pre><code class="hljs language-shell">server {
    location / {
        proxy_pass http://localhost:8080/;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
</code></pre>
<p>该服务器将过滤以<code>.gif</code>，<code>.jpg</code>或<code>.png</code>结尾的请求，并将它们映射到<code>/data/images</code>目录(通过将 URI 添加到<code>root</code>指令的参数)，并将所有其他请求传递到上面配置的代理服务器。</p>
<p>要应用新配置，请按照前几节中的说明将<code>reload</code>signal 发送到 nginx。</p>
<p>许多<a href="http-ngx_http_proxy_module.html">more</a>指令可用于进一步配置代理连接。</p>
<p><a href="" id="fastcgi"></a></p>
<h4 id="设置--fastcgi-代理"><a href="#设置--fastcgi-代理" id="设置--fastcgi-代理"></a>设置 FastCGI 代理</h4>
<p>nginx 可用于将请求路由到 FastCGI 服务器，该服务器运行使用各种框架和编程语言(例如 PHP)构建的应用程序。</p>
<p>与 FastCGI 服务器一起使用的最基本的 Nginx 配置包括使用<a href="http-ngx_http_fastcgi_module.html#fastcgi_pass">fastcgi_pass</a>指令而不是<code>proxy_pass</code>指令和<a href="http-ngx_http_fastcgi_module.html#fastcgi_param">fastcgi_param</a>指令来设置传递给 FastCGI 服务器的参数。假设在<code>localhost:9000</code>上可访问 FastCGI 服务器。以上一节中的代理配置为基础，将<code>proxy_pass</code>指令替换为<code>fastcgi_pass</code>指令，并将参数更改为<code>localhost:9000</code>。在 PHP 中，<code>SCRIPT_FILENAME</code>参数用于确定脚本名称，而<code>QUERY_STRING</code>参数用于传递请求参数。结果配置为：</p>
<pre><code class="hljs language-shell">server {
    location / {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
</code></pre>
<p>这将设置一个服务器，该服务器将通过 FastCGI 协议将除静态图像请求以外的所有请求路由到在<code>localhost:9000</code>上运行的代理服务器。</p>
</div>
</div>
</section>
<div class="right-sidebar">
<div class="affix"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6108808167664152" data-ad-slot="3102929424" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
</div>
</div>
<div class="ft">
<a href="#toolbar-title" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a>
<footer class="footer">
<div class="footer__container--normal">
<img alt="扫码关注公众号" title="扫码关注公众号" src="static/picture/qr-code.png" width="170" height="170">
<div class="footer__description--normal">
<p class="paragraph footer__author--normal">Docs4dev<sup class="super">&#xAE;</sup>
</p>
<p class="paragraph footer__quote&#45;&#45;normal">
如果你在使用过程中遇到任何问题，可以在 <a href="javascript:window.open('https://github.com/docs4dev/docs4dev-issues');" target="_blank" rel="noopener noreferrer">这里<i class="fa fa-external-link"></i></a> 提issue。
</p>
<div class="footer__main--normal">
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
<a href="javascript:window.open('https://beian.miit.gov.cn/');">
蜀ICP备14021783号-6
</a>
</p>
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
Copyright &#xA9; Docs4dev all
right reserved, powered by <a href="index2.html" target="_blank">Docs4dev</a></p>
</div>
</div>
</div>
<div class="box__issues">
</div>
</footer>
</div>
</div>
</div>
</div>
</div>
<script>
  var hasToc = true;
  /*  var downloadable = /!*false*!/ false;
    var editable = /!*false*!/ false;
    var code = /!*"nginx"*!/ false;
    var version = /!*"current"*!/ false;
    var type = /!*"reference"*!/ false;
    var lang = /!*"zh"*!/ 'en';
    //edit link
    require(["gitbook", "jQuery"], function (gitbook, $) {
      gitbook.events.bind('start', function (e, config) {
        // Add edit toolbar to left
        var chapterId = /!*17710*!/ 0;
        if (downloadable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-download',
            text: '下载',
            onClick: function () {
              window.open('/download?code=' + code + '&version=' + version + '&type=' + type + '&lang=' + lang);
            }
          });
        }
        if (editable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-edit',
            text: '编辑此页',
            onClick: function () {
              window.open('/docs/edit?chapterId=' + chapterId + '&lang=' + lang);
            }
          });
        }
      });
    });*/
</script>
<script>
    var code = "nginx";
    var lang = "zh";
  </script>

<script src="static/js/autocomplete-js.js"></script>
<script src="static/js/app.min.js"></script>
<script src="static/js/search.min.js"></script>
</body>
</html>
